package offer2

/**
原题链接:
https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/

剑指 Offer 25. 合并两个排序的链表
输入两个递增排序的链表，合并这两个链表并使新链表中的节点仍然是递增排序的。

示例1：
输入：1->2->4, 1->3->4
输出：1->1->2->3->4->4
*/

func trainningPlan4(l1 *ListNode, l2 *ListNode) *ListNode {
	//1.声明一个哑元节点, 以及p1,p2,p3节点
	var l3 *ListNode = &ListNode{}

	p1 := l1
	p2 := l2
	p3 := l3

	//2.p1,p2节点不为空为条件, 持续遍历
	for p1 != nil && p2 != nil {
		if p1.Val < p2.Val {
			p3.Next = p1
			p1 = p1.Next
		} else {
			p3.Next = p2
			p2 = p2.Next
		}

		p3 = p3.Next
	}

	//3.如果p1不为空, 将剩余元素直接拼接p3上
	if p1 != nil {
		p3.Next = p1
	}
	//4.如果p2不为空, 将剩余元素直接拼接p3上
	if p2 != nil {
		p3.Next = p2
	}

	return l3.Next
}
